Basic character editor ui functional
This commit is contained in:
parent
303aaf3740
commit
ab41020e1c
@ -68,6 +68,14 @@
|
|||||||
"primaryBone" : "UpperTorso",
|
"primaryBone" : "UpperTorso",
|
||||||
"minValue" : -0.2,
|
"minValue" : -0.2,
|
||||||
"maxValue" : 0.2
|
"maxValue" : 0.2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"attributeId" : "HeadWidth",
|
||||||
|
"type" : "bone",
|
||||||
|
"subtype" : "scalex",
|
||||||
|
"primaryBone" : "Head",
|
||||||
|
"minValue" : 0.8,
|
||||||
|
"maxValue" : 1.2
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"movementSystems" : [
|
"movementSystems" : [
|
||||||
|
|||||||
@ -785,64 +785,9 @@ public class MenuGenerators {
|
|||||||
float minVal = attribute.getMinValue();
|
float minVal = attribute.getMinValue();
|
||||||
float range = attribute.getMaxValue() - minVal;
|
float range = attribute.getMaxValue() - minVal;
|
||||||
float actualValue = minVal + range * value;
|
float actualValue = minVal + range * value;
|
||||||
switch(attribute.getSubtype()){
|
staticMorph.updateValue(attribute.getSubtype(), attribute.getPrimaryBone(), event.getAsFloat());
|
||||||
case "yaw":
|
if(attribute.getMirrorBone() != null){
|
||||||
staticMorph.setYaw(attribute.getPrimaryBone(), actualValue);
|
staticMorph.updateValue(attribute.getSubtype(), attribute.getMirrorBone(), event.getAsFloat());
|
||||||
if(attribute.getMirrorBone() != null){
|
|
||||||
staticMorph.setYaw(attribute.getMirrorBone(), -actualValue);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case "pitch":
|
|
||||||
staticMorph.setPitch(attribute.getPrimaryBone(), actualValue);
|
|
||||||
if(attribute.getMirrorBone() != null){
|
|
||||||
staticMorph.setPitch(attribute.getMirrorBone(), -actualValue);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case "roll":
|
|
||||||
staticMorph.setRoll(attribute.getPrimaryBone(), actualValue);
|
|
||||||
if(attribute.getMirrorBone() != null){
|
|
||||||
staticMorph.setRoll(attribute.getMirrorBone(), -actualValue);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case "scalex":
|
|
||||||
staticMorph.setScaleX(attribute.getPrimaryBone(), actualValue);
|
|
||||||
if(attribute.getMirrorBone() != null){
|
|
||||||
staticMorph.setScaleX(attribute.getMirrorBone(), -actualValue);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case "scaley":
|
|
||||||
staticMorph.setScaleY(attribute.getPrimaryBone(), actualValue);
|
|
||||||
if(attribute.getMirrorBone() != null){
|
|
||||||
staticMorph.setScaleY(attribute.getMirrorBone(), -actualValue);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case "scalez":
|
|
||||||
staticMorph.setScaleZ(attribute.getPrimaryBone(), actualValue);
|
|
||||||
if(attribute.getMirrorBone() != null){
|
|
||||||
staticMorph.setScaleZ(attribute.getMirrorBone(), -actualValue);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case "offx":
|
|
||||||
staticMorph.setOffsetX(attribute.getPrimaryBone(), actualValue);
|
|
||||||
if(attribute.getMirrorBone() != null){
|
|
||||||
staticMorph.setOffsetX(attribute.getMirrorBone(), -actualValue);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case "offy":
|
|
||||||
staticMorph.setOffsetY(attribute.getPrimaryBone(), actualValue);
|
|
||||||
if(attribute.getMirrorBone() != null){
|
|
||||||
staticMorph.setOffsetY(attribute.getMirrorBone(), -actualValue);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case "offz":
|
|
||||||
staticMorph.setOffsetZ(attribute.getPrimaryBone(), actualValue);
|
|
||||||
if(attribute.getMirrorBone() != null){
|
|
||||||
staticMorph.setOffsetZ(attribute.getMirrorBone(), -actualValue);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case "offl":
|
|
||||||
//TODO
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}});
|
}});
|
||||||
scrollable.addChild(attributeSlider);
|
scrollable.addChild(attributeSlider);
|
||||||
|
|||||||
@ -3,15 +3,24 @@ package electrosphere.menu;
|
|||||||
import java.util.LinkedList;
|
import java.util.LinkedList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.joml.Quaternionf;
|
||||||
import org.joml.Vector3f;
|
import org.joml.Vector3f;
|
||||||
|
|
||||||
|
import electrosphere.entity.types.camera.CameraEntityUtils;
|
||||||
import electrosphere.game.data.creature.type.CreatureType;
|
import electrosphere.game.data.creature.type.CreatureType;
|
||||||
import electrosphere.game.data.creature.type.visualattribute.AttributeVariant;
|
import electrosphere.game.data.creature.type.visualattribute.AttributeVariant;
|
||||||
import electrosphere.game.data.creature.type.visualattribute.VisualAttribute;
|
import electrosphere.game.data.creature.type.visualattribute.VisualAttribute;
|
||||||
import electrosphere.main.Globals;
|
import electrosphere.main.Globals;
|
||||||
|
import electrosphere.renderer.Camera;
|
||||||
|
import electrosphere.renderer.actor.Actor;
|
||||||
|
import electrosphere.renderer.actor.ActorStaticMorph;
|
||||||
|
import electrosphere.renderer.actor.ActorUtils;
|
||||||
|
import electrosphere.renderer.actor.ActorStaticMorph.StaticMorphTransforms;
|
||||||
|
import electrosphere.renderer.anim.Animation;
|
||||||
import electrosphere.renderer.ui.ClickableElement;
|
import electrosphere.renderer.ui.ClickableElement;
|
||||||
import electrosphere.renderer.ui.Element;
|
import electrosphere.renderer.ui.Element;
|
||||||
import electrosphere.renderer.ui.ValueElement.ValueChangeEventCallback;
|
import electrosphere.renderer.ui.ValueElement.ValueChangeEventCallback;
|
||||||
|
import electrosphere.renderer.ui.elements.ActorPanel;
|
||||||
import electrosphere.renderer.ui.elements.Button;
|
import electrosphere.renderer.ui.elements.Button;
|
||||||
import electrosphere.renderer.ui.elements.ImagePanel;
|
import electrosphere.renderer.ui.elements.ImagePanel;
|
||||||
import electrosphere.renderer.ui.elements.Label;
|
import electrosphere.renderer.ui.elements.Label;
|
||||||
@ -78,9 +87,25 @@ public class MenuGeneratorsMultiplayer {
|
|||||||
int verticalPosition = 125;
|
int verticalPosition = 125;
|
||||||
int horizontalPosition = 300;
|
int horizontalPosition = 300;
|
||||||
|
|
||||||
|
//figure out race data
|
||||||
|
CreatureType selectedRaceType = Globals.gameConfigCurrent.getCreatureTypeLoader().getCreature(race);
|
||||||
|
|
||||||
|
//spawn camera so renderer doesn't crash (once render pipeline is modularized this shouldn't be necessary)
|
||||||
|
Globals.playerCamera = CameraEntityUtils.spawnBasicCameraEntity(new Vector3f(0,0,0), new Vector3f(-1,0.2f,0).normalize());
|
||||||
|
|
||||||
|
//create actor panel
|
||||||
|
Actor characterActor = ActorUtils.createActorFromModelPath(selectedRaceType.getModelPath());
|
||||||
|
ActorPanel actorPanel = new ActorPanel(1200, 100, 500, 500, characterActor);
|
||||||
|
actorPanel.setAnimation(Animation.ANIMATION_IDLE_1);
|
||||||
|
actorPanel.setPosition(new Vector3f(-5,-2,0));
|
||||||
|
actorPanel.setRotation(new Quaternionf().rotateLocalY((float)(Math.PI/4.0)));
|
||||||
|
actorPanel.setScale(new Vector3f(0.03f,0.03f,0.03f));
|
||||||
|
|
||||||
|
//have to build static morph while looping through attributes
|
||||||
|
ActorStaticMorph staticMorph = new ActorStaticMorph();
|
||||||
|
|
||||||
List<Element> controlsToAdd = new LinkedList<Element>();
|
List<Element> controlsToAdd = new LinkedList<Element>();
|
||||||
//create edit controls here
|
//create edit controls here
|
||||||
CreatureType selectedRaceType = Globals.gameConfigCurrent.getCreatureTypeLoader().getCreature(race);
|
|
||||||
for(VisualAttribute attribute : selectedRaceType.getVisualAttributes()){
|
for(VisualAttribute attribute : selectedRaceType.getVisualAttributes()){
|
||||||
if(attribute.getType().equals(VisualAttribute.TYPE_BONE)){
|
if(attribute.getType().equals(VisualAttribute.TYPE_BONE)){
|
||||||
//add label for slider
|
//add label for slider
|
||||||
@ -95,6 +120,23 @@ public class MenuGeneratorsMultiplayer {
|
|||||||
boneSlider.setMaximum(max);
|
boneSlider.setMaximum(max);
|
||||||
boneSlider.setValue(min + (max - min)/2.0f);
|
boneSlider.setValue(min + (max - min)/2.0f);
|
||||||
controlsToAdd.add(boneSlider);
|
controlsToAdd.add(boneSlider);
|
||||||
|
//actually add attributes to static morph
|
||||||
|
if(attribute.getPrimaryBone() != null && staticMorph.getBoneTransforms(attribute.getPrimaryBone()) == null){
|
||||||
|
staticMorph.initBoneTransforms(attribute.getPrimaryBone());
|
||||||
|
}
|
||||||
|
if(attribute.getMirrorBone() != null && staticMorph.getBoneTransforms(attribute.getMirrorBone()) == null){
|
||||||
|
staticMorph.initBoneTransforms(attribute.getMirrorBone());
|
||||||
|
}
|
||||||
|
//set callback for when we change the slider value to update the static morph
|
||||||
|
boneSlider.setOnValueChangeCallback(new ValueChangeEventCallback() {public void execute(ValueChangeEvent event) {
|
||||||
|
if(characterActor.getStaticMorph() != null){
|
||||||
|
ActorStaticMorph staticMorph = characterActor.getStaticMorph();
|
||||||
|
staticMorph.updateValue(attribute.getSubtype(), attribute.getPrimaryBone(), event.getAsFloat());
|
||||||
|
if(attribute.getMirrorBone() != null){
|
||||||
|
staticMorph.updateValue(attribute.getSubtype(), attribute.getMirrorBone(), -event.getAsFloat());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}});
|
||||||
} else if(attribute.getType().equals(VisualAttribute.TYPE_REMESH)){
|
} else if(attribute.getType().equals(VisualAttribute.TYPE_REMESH)){
|
||||||
//add label for carousel
|
//add label for carousel
|
||||||
Label sliderName = new Label(20, verticalPosition, 0.6f);
|
Label sliderName = new Label(20, verticalPosition, 0.6f);
|
||||||
@ -109,6 +151,8 @@ public class MenuGeneratorsMultiplayer {
|
|||||||
}
|
}
|
||||||
verticalPosition = verticalPosition + 100;
|
verticalPosition = verticalPosition + 100;
|
||||||
}
|
}
|
||||||
|
//finally set static morph
|
||||||
|
characterActor.setActorStaticMorph(staticMorph);
|
||||||
|
|
||||||
//add button to actually create the character
|
//add button to actually create the character
|
||||||
Button createCharacterButton = new Button();
|
Button createCharacterButton = new Button();
|
||||||
@ -121,13 +165,16 @@ public class MenuGeneratorsMultiplayer {
|
|||||||
return false;
|
return false;
|
||||||
}});
|
}});
|
||||||
|
|
||||||
int width = 1000;
|
int width = 1800;
|
||||||
int height = verticalPosition + 300;
|
int height = verticalPosition + 300;
|
||||||
|
|
||||||
ScrollableContainer scrollable = new ScrollableContainer(0, 0, width, height);
|
ScrollableContainer scrollable = new ScrollableContainer(0, 0, width, height);
|
||||||
for(Element newControl : controlsToAdd){
|
for(Element newControl : controlsToAdd){
|
||||||
scrollable.addChild(newControl);
|
scrollable.addChild(newControl);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
scrollable.addChild(actorPanel);
|
||||||
// rVal.addChild(scrollable);
|
// rVal.addChild(scrollable);
|
||||||
|
|
||||||
// Label testLabel = new Label(100,215,1.0f);
|
// Label testLabel = new Label(100,215,1.0f);
|
||||||
|
|||||||
@ -19,60 +19,98 @@ public class ActorStaticMorph {
|
|||||||
return boneTransformMap.get(boneName);
|
return boneTransformMap.get(boneName);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setYaw(String boneName, float yaw){
|
void setYaw(String boneName, float yaw){
|
||||||
if(boneTransformMap.containsKey(boneName)){
|
if(boneTransformMap.containsKey(boneName)){
|
||||||
boneTransformMap.get(boneName).yaw = yaw;
|
boneTransformMap.get(boneName).yaw = yaw;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setPitch(String boneName, float pitch){
|
void setPitch(String boneName, float pitch){
|
||||||
if(boneTransformMap.containsKey(boneName)){
|
if(boneTransformMap.containsKey(boneName)){
|
||||||
boneTransformMap.get(boneName).pitch = pitch;
|
boneTransformMap.get(boneName).pitch = pitch;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setRoll(String boneName, float roll){
|
void setRoll(String boneName, float roll){
|
||||||
if(boneTransformMap.containsKey(boneName)){
|
if(boneTransformMap.containsKey(boneName)){
|
||||||
boneTransformMap.get(boneName).roll = roll;
|
boneTransformMap.get(boneName).roll = roll;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setOffsetX(String boneName, float offsetX){
|
void setOffsetX(String boneName, float offsetX){
|
||||||
if(boneTransformMap.containsKey(boneName)){
|
if(boneTransformMap.containsKey(boneName)){
|
||||||
boneTransformMap.get(boneName).offset.x = offsetX;
|
boneTransformMap.get(boneName).offset.x = offsetX;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setOffsetY(String boneName, float offsetY){
|
void setOffsetY(String boneName, float offsetY){
|
||||||
if(boneTransformMap.containsKey(boneName)){
|
if(boneTransformMap.containsKey(boneName)){
|
||||||
boneTransformMap.get(boneName).offset.y = offsetY;
|
boneTransformMap.get(boneName).offset.y = offsetY;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setOffsetZ(String boneName, float offsetZ){
|
void setOffsetZ(String boneName, float offsetZ){
|
||||||
if(boneTransformMap.containsKey(boneName)){
|
if(boneTransformMap.containsKey(boneName)){
|
||||||
boneTransformMap.get(boneName).offset.z = offsetZ;
|
boneTransformMap.get(boneName).offset.z = offsetZ;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setScaleX(String boneName, float scaleX){
|
void setScaleX(String boneName, float scaleX){
|
||||||
if(boneTransformMap.containsKey(boneName)){
|
if(boneTransformMap.containsKey(boneName)){
|
||||||
boneTransformMap.get(boneName).scale.x = scaleX;
|
boneTransformMap.get(boneName).scale.x = scaleX;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setScaleY(String boneName, float scaleY){
|
void setScaleY(String boneName, float scaleY){
|
||||||
if(boneTransformMap.containsKey(boneName)){
|
if(boneTransformMap.containsKey(boneName)){
|
||||||
boneTransformMap.get(boneName).scale.y = scaleY;
|
boneTransformMap.get(boneName).scale.y = scaleY;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setScaleZ(String boneName, float scaleZ){
|
void setScaleZ(String boneName, float scaleZ){
|
||||||
if(boneTransformMap.containsKey(boneName)){
|
if(boneTransformMap.containsKey(boneName)){
|
||||||
boneTransformMap.get(boneName).scale.z = scaleZ;
|
boneTransformMap.get(boneName).scale.z = scaleZ;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Instead of having this code be duplicated every time we want to update a static morph, putting it in here
|
||||||
|
*/
|
||||||
|
public void updateValue(String subtype, String bone, float value){
|
||||||
|
switch(subtype){
|
||||||
|
case "yaw":
|
||||||
|
this.setYaw(bone, value);
|
||||||
|
break;
|
||||||
|
case "pitch":
|
||||||
|
this.setPitch(bone, value);
|
||||||
|
break;
|
||||||
|
case "roll":
|
||||||
|
this.setRoll(bone, value);
|
||||||
|
break;
|
||||||
|
case "scalex":
|
||||||
|
this.setScaleX(bone, value);
|
||||||
|
break;
|
||||||
|
case "scaley":
|
||||||
|
this.setScaleY(bone, value);
|
||||||
|
break;
|
||||||
|
case "scalez":
|
||||||
|
this.setScaleZ(bone, value);
|
||||||
|
break;
|
||||||
|
case "offx":
|
||||||
|
this.setOffsetX(bone, value);
|
||||||
|
break;
|
||||||
|
case "offy":
|
||||||
|
this.setOffsetY(bone, value);
|
||||||
|
break;
|
||||||
|
case "offz":
|
||||||
|
this.setOffsetZ(bone, value);
|
||||||
|
break;
|
||||||
|
case "offl":
|
||||||
|
//TODO
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public class StaticMorphTransforms {
|
public class StaticMorphTransforms {
|
||||||
|
|||||||
230
src/main/java/electrosphere/renderer/ui/elements/ActorPanel.java
Normal file
230
src/main/java/electrosphere/renderer/ui/elements/ActorPanel.java
Normal file
@ -0,0 +1,230 @@
|
|||||||
|
package electrosphere.renderer.ui.elements;
|
||||||
|
|
||||||
|
import org.joml.Matrix4f;
|
||||||
|
import org.joml.Quaternionf;
|
||||||
|
import org.joml.Vector3f;
|
||||||
|
import static org.lwjgl.opengl.GL11.GL_COLOR_BUFFER_BIT;
|
||||||
|
import static org.lwjgl.opengl.GL11.GL_DEPTH_BUFFER_BIT;
|
||||||
|
import static org.lwjgl.opengl.GL11.glClear;
|
||||||
|
import static org.lwjgl.opengl.GL11.glClearColor;
|
||||||
|
import static org.lwjgl.opengl.GL30.GL_FRAMEBUFFER;
|
||||||
|
import static org.lwjgl.opengl.GL30.glBindFramebuffer;
|
||||||
|
|
||||||
|
import electrosphere.logger.LoggerInterface;
|
||||||
|
import electrosphere.main.Globals;
|
||||||
|
import electrosphere.main.Main;
|
||||||
|
import electrosphere.renderer.Material;
|
||||||
|
import electrosphere.renderer.Model;
|
||||||
|
import electrosphere.renderer.actor.Actor;
|
||||||
|
import electrosphere.renderer.framebuffer.Framebuffer;
|
||||||
|
import electrosphere.renderer.framebuffer.FramebufferUtils;
|
||||||
|
import electrosphere.renderer.texture.Texture;
|
||||||
|
import electrosphere.renderer.ui.DraggableElement;
|
||||||
|
import electrosphere.renderer.ui.DrawableElement;
|
||||||
|
import electrosphere.renderer.ui.events.DragEvent;
|
||||||
|
import electrosphere.renderer.ui.events.Event;
|
||||||
|
import electrosphere.renderer.ui.events.DragEvent.DragEventType;
|
||||||
|
|
||||||
|
public class ActorPanel implements DrawableElement, DraggableElement {
|
||||||
|
|
||||||
|
Material customMat = new Material();
|
||||||
|
Framebuffer elementBuffer;
|
||||||
|
|
||||||
|
Actor actor;
|
||||||
|
Matrix4f modelMatrix = new Matrix4f();
|
||||||
|
String currentAnim;
|
||||||
|
Vector3f actorPosition = new Vector3f(0,0,0);
|
||||||
|
Quaternionf actorRotation = new Quaternionf();
|
||||||
|
Vector3f actorScale = new Vector3f(1,1,1);
|
||||||
|
|
||||||
|
|
||||||
|
Vector3f texPosition = new Vector3f(0,0,0);
|
||||||
|
Vector3f texScale = new Vector3f(1,1,0);
|
||||||
|
|
||||||
|
DragEventCallback onDragStart;
|
||||||
|
DragEventCallback onDrag;
|
||||||
|
DragEventCallback onDragRelease;
|
||||||
|
|
||||||
|
public ActorPanel(int x, int y, int width, int height, Actor actor){
|
||||||
|
elementBuffer = FramebufferUtils.generateTextureFramebuffer(width, height);
|
||||||
|
customMat.setTexturePointer(elementBuffer.getTexturePointer());
|
||||||
|
this.actor = actor;
|
||||||
|
this.positionX = x;
|
||||||
|
this.positionY = y;
|
||||||
|
this.width = width;
|
||||||
|
this.height = height;
|
||||||
|
recalculateModelMatrix();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void draw(int parentFramebufferPointer, int parentWidth, int parentHeight) {
|
||||||
|
|
||||||
|
elementBuffer.bind();
|
||||||
|
// Globals.renderingEngine.setViewportSize(width, height);
|
||||||
|
|
||||||
|
glClearColor(1.0f, 1.0f, 1.0f, 1.0f);
|
||||||
|
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
|
||||||
|
|
||||||
|
if(currentAnim != null){
|
||||||
|
if(!actor.isPlayingAnimation() || !actor.isPlayingAnimation(currentAnim)){
|
||||||
|
actor.playAnimation(currentAnim,3);
|
||||||
|
actor.incrementAnimationTime(Main.deltaFrames);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
actor.applyModelMatrix(modelMatrix);
|
||||||
|
actor.draw(true);
|
||||||
|
|
||||||
|
//this call binds the screen as the "texture" we're rendering to
|
||||||
|
//have to call before actually rendering
|
||||||
|
glBindFramebuffer(GL_FRAMEBUFFER, parentFramebufferPointer);
|
||||||
|
|
||||||
|
float ndcX = (float)positionX/parentWidth;
|
||||||
|
float ndcY = (float)positionY/parentHeight;
|
||||||
|
float ndcWidth = (float)width/parentWidth;
|
||||||
|
float ndcHeight = (float)height/parentHeight;
|
||||||
|
|
||||||
|
Vector3f boxPosition = new Vector3f(ndcX,ndcY,0);
|
||||||
|
Vector3f boxDimensions = new Vector3f(ndcWidth,ndcHeight,0);
|
||||||
|
|
||||||
|
Model planeModel = Globals.assetManager.fetchModel(ImagePanel.imagePanelModelPath);
|
||||||
|
if(planeModel != null){
|
||||||
|
planeModel.pushUniformToMesh("plane", "mPosition", boxPosition);
|
||||||
|
planeModel.pushUniformToMesh("plane", "mDimension", boxDimensions);
|
||||||
|
planeModel.pushUniformToMesh("plane", "tPosition", texPosition);
|
||||||
|
planeModel.pushUniformToMesh("plane", "tDimension", texScale);
|
||||||
|
planeModel.meshes.get(0).setMaterial(customMat);
|
||||||
|
planeModel.drawUI();
|
||||||
|
} else {
|
||||||
|
LoggerInterface.loggerRenderer.ERROR("Actor Panel unable to find plane model!!", new Exception());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public int width = 1;
|
||||||
|
public int height = 1;
|
||||||
|
|
||||||
|
public int positionX = 0;
|
||||||
|
public int positionY = 0;
|
||||||
|
|
||||||
|
public int parentWidth = 1;
|
||||||
|
public int parentHeight = 1;
|
||||||
|
|
||||||
|
public boolean visible = false;
|
||||||
|
|
||||||
|
public int getWidth() {
|
||||||
|
return width;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getHeight() {
|
||||||
|
return height;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getPositionX() {
|
||||||
|
return positionX;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getPositionY() {
|
||||||
|
return positionY;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean getVisible() {
|
||||||
|
return visible;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setWidth(int width) {
|
||||||
|
this.width = width;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setHeight(int height) {
|
||||||
|
this.height = height;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPositionX(int positionX) {
|
||||||
|
this.positionX = positionX;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPositionY(int positionY) {
|
||||||
|
this.positionY = positionY;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setVisible(boolean draw) {
|
||||||
|
this.visible = draw;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setParentWidth(int width){
|
||||||
|
parentWidth = width;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setParentHeight(int height){
|
||||||
|
this.parentHeight = height;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setAnimation(String animation){
|
||||||
|
currentAnim = animation;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPosition(Vector3f position){
|
||||||
|
this.actorPosition.set(position);
|
||||||
|
recalculateModelMatrix();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setRotation(Quaternionf rotation){
|
||||||
|
this.actorRotation.set(rotation);
|
||||||
|
recalculateModelMatrix();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setScale(Vector3f scale){
|
||||||
|
this.actorScale.set(scale);
|
||||||
|
recalculateModelMatrix();
|
||||||
|
}
|
||||||
|
|
||||||
|
void recalculateModelMatrix(){
|
||||||
|
modelMatrix.identity();
|
||||||
|
modelMatrix.translate(actorPosition);
|
||||||
|
modelMatrix.rotate(actorRotation);
|
||||||
|
modelMatrix.scale(actorScale);
|
||||||
|
actor.applyModelMatrix(modelMatrix);
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean handleEvent(Event event){
|
||||||
|
boolean propagate = true;
|
||||||
|
if(event instanceof DragEvent){
|
||||||
|
if(onDragStart != null && ((DragEvent)event).getType() == DragEventType.START){
|
||||||
|
if(!onDragStart.execute((DragEvent)event)){
|
||||||
|
propagate = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(onDrag != null && ((DragEvent)event).getType() == DragEventType.DRAG){
|
||||||
|
if(!onDrag.execute((DragEvent)event)){
|
||||||
|
propagate = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(onDragRelease != null && ((DragEvent)event).getType() == DragEventType.RELEASE){
|
||||||
|
if(!onDragRelease.execute((DragEvent)event)){
|
||||||
|
propagate = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return propagate;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setOnDragStart(DragEventCallback callback) {
|
||||||
|
onDragStart = callback;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setOnDrag(DragEventCallback callback) {
|
||||||
|
onDrag = callback;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setOnDragRelease(DragEventCallback callback) {
|
||||||
|
onDragRelease = callback;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue
Block a user