diff --git a/GameEngine/resources/GameEngineTest.model b/GameEngine/resources/GameEngineTest.model index c0e02a7..40a3d27 100644 --- a/GameEngine/resources/GameEngineTest.model +++ b/GameEngine/resources/GameEngineTest.model @@ -1,4 +1,36 @@ init { +scene := { + "entities": { + "1": { + "eid": "1", + "transform": { + "rotation": { + "x": 0.0, + "y": 0.0, + "z": 0.0 + }, + "scale": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "position": { + "x": 570.0, + "y": 321.0, + "z": 0.0 + } + }, + "move": { + "type": straight, + "speed": 5.0 + }, + "mesh": { + "sprite": "GameEngine/resources/enemy1.png", + "type": "sprite" + } + } + } +} player := { "transform": { "rotation": { @@ -36,11 +68,15 @@ "z": 1.0 }, "position": { - "x": 600.0, - "y": 450.0, + "x": 570.0, + "y": 321.0, "z": 0.0 } }, + "move": { + "type": straight, + "speed": 5.0 + }, "mesh": { "sprite": "GameEngine/resources/enemy1.png", "type": "sprite" @@ -75,10 +111,10 @@ native channel EntityPositionUpdate(eid:Str) { in scene.entities.{eid:Str}.transform.position(curPos:Json,updatePosition(nextPos.x,nextPos.y,nextPos.z)) = nextPos } -channel MoveEnemy1(eid:Str) { +channel MoveEnemy1 { in enemy1.transform.position(curPos:Json,moveEnemy1(nextPos,eid)) = nextPos ref enemy1.eid(eid,moveEnemy1(nextPos,eid)) - out enemy1.transform.position(curPos:Json,moveEnemy1(nextPos,eid)) = nextPos + out scene.entities.{eid:Str}.transform.position(curPos:Json,moveEnemy1(nextPos,eid)) = nextPos } native channel CameraProjectionUpdate { in scene.camera.projection(curProj:Json,updateProjection(curProj,nextProj)) = nextProj @@ -88,8 +124,8 @@ } channel UpdateEnemy1(tid:Str) { in timers.{tid:Str}.count(curCount:Long,updateEnemy1(type,speed)) = nextCount - ref enemy1.move.speed(speed:Float,updateEnemy1(type,speed)) ref enemy1.move.type(type:Str,updateEnemy1(type,speed)) + ref enemy1.move.speed(speed:Float,updateEnemy1(type,speed)) out enemy1.transform.position(curPos:Json,updateEnemy1(type,speed)) = { "x": curPos.x, "y": (curPos.y+speed), @@ -108,10 +144,10 @@ native channel TimersUpdated { in timers(curTimers:Map,update(curTimers,nextTimers)) = nextTimers } -channel RotateEnemy1(eid:Str) { +channel RotateEnemy1 { in enemy1.transform.rotation(curRot:Json,rotateEnemy1(nextRot,eid)) = nextRot ref enemy1.eid(eid,rotateEnemy1(nextRot,eid)) - out enemy1.transform.rotation(curRot:Json,rotateEnemy1(nextRot,eid)) = nextRot + out scene.entities.{eid:Str}.transform.rotation(curRot:Json,rotateEnemy1(nextRot,eid)) = nextRot } native channel CameraPositionUpdate { in scene.camera.transform.position(curPos:Json,updatePosition(nextPos.x,nextPos.y,nextPos.z)) = nextPos diff --git a/GameEngine/src/main/java/gameEngine/GameEngineModelFileGenerator.java b/GameEngine/src/main/java/gameEngine/GameEngineModelFileGenerator.java index 9080c96..4ef083d 100644 --- a/GameEngine/src/main/java/gameEngine/GameEngineModelFileGenerator.java +++ b/GameEngine/src/main/java/gameEngine/GameEngineModelFileGenerator.java @@ -6,6 +6,7 @@ import gameEngine.entites.editorComponents.EntityView; import gameEngine.geometry.Transform; import gameEngine.scenes.EditorScene; +import gameEngine.scenes.Scene; import gameEngine.views.Window; import models.algebra.Constant; import models.algebra.Expression; @@ -306,7 +307,7 @@ ); addChannel( - new DataTransferChannel("MoveEnemy" + id, new Variable("eid", DataConstraintModel.typeString)), + new DataTransferChannel("MoveEnemy" + id), new ChannelMemberDefinition( ChannelMemberDefinition.ChannelMemberType.In, enemy_transform_position.get(i - 1), @@ -320,14 +321,14 @@ "moveEnemy" + id + "(nextPos, eid)"), new ChannelMemberDefinition( ChannelMemberDefinition.ChannelMemberType.Out, - enemy_transform_position.get(i - 1), + entity_transform_position, "curPos: Json", "moveEnemy" + id + "(nextPos, eid)", "nextPos") ); addChannel( - new DataTransferChannel("RotateEnemy" + id, new Variable("eid", DataConstraintModel.typeString)), + new DataTransferChannel("RotateEnemy" + id), new ChannelMemberDefinition( ChannelMemberDefinition.ChannelMemberType.In, enemy_transform_rotation.get(i - 1), @@ -341,7 +342,7 @@ "rotateEnemy" + id + "(nextRot, eid)"), new ChannelMemberDefinition( ChannelMemberDefinition.ChannelMemberType.Out, - enemy_transform_rotation.get(i - 1), + entity_transform_rotation, "curRot: Json", "rotateEnemy" + id + "(nextRot, eid)", "nextRot") @@ -458,6 +459,11 @@ return playerTerm; } +// public JsonTerm createSceneTerm(){ +// +// +// } + private void addInit() { EditorScene editorScene = (EditorScene) Window.get().getScene(); @@ -467,6 +473,11 @@ playerHierarchy.setInitialValue(playerRightTerm); playerHierarchy.setInitText(playerRightTerm.toString()); + ResourceHierarchy sceneHierarchy = new ResourceHierarchy("scene", DataConstraintModel.typeJson); + sceneHierarchy = model.getOrPutResourceHierarchy(sceneHierarchy); + + JsonTerm entitiesTerm = new JsonTerm(); + // 0番はカメラのため for (int i = 1; i < editorScene.editorEntities.size(); i++) { EditorEntity editorEntity = (EditorEntity) editorScene.getEditorEntity("" + i); @@ -474,11 +485,18 @@ ResourceHierarchy enemyHierarchy = new ResourceHierarchy("enemy" + editorScene.getEditorEntity("" + i).getId(), DataConstraintModel.typeJson); enemyHierarchy = model.getOrPutResourceHierarchy(enemyHierarchy); JsonTerm enemyTerm = createEnemyJsonTerm(editorScene.getEditorEntity("" + i)); + entitiesTerm.addMember(editorScene.getEditorEntity("" + i).getId() ,enemyTerm); enemyHierarchy.setInitialValue(enemyTerm); enemyHierarchy.setInitText(enemyTerm.toString()); } } + JsonTerm sceneTerm = new JsonTerm(); + sceneTerm.addMember("entities", entitiesTerm); + sceneHierarchy.setInitialValue(sceneTerm); + sceneHierarchy.setInitText(sceneTerm.toString()); + + }