リビジョン | 2d8633a93d98b18fa64cff531bb34131274ab04c (tree) |
---|---|
日時 | 2020-01-15 05:45:18 |
作者 | sebastian_bugiu <sebastian_ <bugiu@head...> |
コミッター | sebastian_bugiu <sebastian_ |
Modified so that only ships use the metallic workflow while asteroids and flags only use specular workflow.
@@ -25,18 +25,18 @@ | ||
25 | 25 | // private boolean nativePtrSet; |
26 | 26 | // protected boolean attached; |
27 | 27 | |
28 | - public ENG_Item(long id, String name, String meshName) { | |
29 | - this(id, name, meshName, 1); | |
28 | + public ENG_Item(long id, String name, String meshName, ENG_Workflows workflow) { | |
29 | + this(id, name, meshName, 1, workflow); | |
30 | 30 | } |
31 | 31 | |
32 | - public ENG_Item(long id, String name, String meshName, int subItemCount) { | |
32 | + public ENG_Item(long id, String name, String meshName, int subItemCount, ENG_Workflows workflow) { | |
33 | 33 | this.id = id; |
34 | 34 | this.name = name; |
35 | - initializeNative(meshName, subItemCount); | |
35 | + initializeNative(meshName, subItemCount, workflow); | |
36 | 36 | } |
37 | 37 | |
38 | - public void initializeNative(String meshName, int subItemCount) { | |
39 | - ENG_NativeCalls.sceneManager_createItem(this, meshName, subItemCount); | |
38 | + private void initializeNative(String meshName, int subItemCount, ENG_Workflows workflow) { | |
39 | + ENG_NativeCalls.sceneManager_createItem(this, meshName, subItemCount, workflow); | |
40 | 40 | } |
41 | 41 | |
42 | 42 | public void setSubItemPtr(long ptr) { |
@@ -14,7 +14,13 @@ | ||
14 | 14 | protected Object createInstanceImpl(String name, TreeMap<String, String> params) { |
15 | 15 | String mesh = params.get("mesh"); |
16 | 16 | long lId = getIdParam(params); |
17 | - return new ENG_Item(lId, name, mesh); | |
17 | + String pbsWorkflow = params.get(ENG_SceneManager.MOVABLE_OBJECT_PARAM_PBSWORKFLOW); | |
18 | + ENG_Workflows workflow = ENG_Workflows.SpecularWorkflow; | |
19 | + if (pbsWorkflow != null) { | |
20 | + int workflowByte = Integer.parseInt(pbsWorkflow); | |
21 | + workflow = ENG_Workflows.toWorkflow(workflowByte); | |
22 | + } | |
23 | + return new ENG_Item(lId, name, mesh, workflow); | |
18 | 24 | } |
19 | 25 | |
20 | 26 | @Override |
@@ -64,6 +64,8 @@ | ||
64 | 64 | public static final String INTERNAL_RESOURCE_GROUP_NAME = "Internal"; |
65 | 65 | public static final String AUTODETECT_RESOURCE_GROUP_NAME = "Autodetect"; |
66 | 66 | public static final byte V_1_FAST_RENDER_QUEUE = (byte) 3; |
67 | + public static final String MOVABLE_OBJECT_PARAM_PBSWORKFLOW = "pbsworkflow"; | |
68 | + public static final String MOVABLE_OBJECT_PARAM_ID = "id"; | |
67 | 69 | |
68 | 70 | @Override |
69 | 71 | public long getPointer() { |
@@ -1442,8 +1444,14 @@ | ||
1442 | 1444 | * @return |
1443 | 1445 | */ |
1444 | 1446 | public ENG_Item createItem(String name, long id, String meshName, String groupName) { |
1447 | + return createItem(name, id, meshName, groupName, ENG_Workflows.SpecularWorkflow); | |
1448 | + } | |
1449 | + | |
1450 | + | |
1451 | + public ENG_Item createItem(String name, long id, String meshName, String groupName, ENG_Workflows pbsWorkflow) { | |
1445 | 1452 | TreeMap<String, String> params = getCreateEntityParams(meshName, groupName); |
1446 | - params.put("id", String.valueOf(id)); | |
1453 | + params.put(MOVABLE_OBJECT_PARAM_ID, String.valueOf(id)); | |
1454 | + params.put(MOVABLE_OBJECT_PARAM_PBSWORKFLOW, String.valueOf(pbsWorkflow.getWorkflow())); | |
1447 | 1455 | ENG_Item item = (ENG_Item) createMovableObject(name, ENG_ItemFactory.FACTORY_TYPE_NAME, params); |
1448 | 1456 | addMovableObject(item, AttachableObjectType.ITEM); |
1449 | 1457 | return item; |
@@ -22,4 +22,18 @@ | ||
22 | 22 | public byte getWorkflow() { |
23 | 23 | return workflow; |
24 | 24 | } |
25 | + | |
26 | + public static ENG_Workflows toWorkflow(int value) { | |
27 | + switch (value) | |
28 | + { | |
29 | + case 0: | |
30 | + return ENG_Workflows.SpecularWorkflow; | |
31 | + case 1: | |
32 | + return ENG_Workflows.SpecularAsFresnelWorkflow; | |
33 | + case 2: | |
34 | + return ENG_Workflows.MetallicWorkflow; | |
35 | + default: | |
36 | + throw new IllegalArgumentException(value + " is an invalid workflow"); | |
37 | + } | |
38 | + } | |
25 | 39 | } |
@@ -21,6 +21,7 @@ | ||
21 | 21 | import headwayent.hotshotengine.ENG_Vector4D; |
22 | 22 | import headwayent.hotshotengine.renderer.ENG_ColorValue; |
23 | 23 | import headwayent.hotshotengine.renderer.ENG_Item; |
24 | +import headwayent.hotshotengine.renderer.ENG_Workflows; | |
24 | 25 | import headwayent.hotshotengine.statedebugger.ENG_FrameInterval; |
25 | 26 | import headwayent.hotshotengine.statedebugger.ENG_State; |
26 | 27 |
@@ -436,7 +437,7 @@ | ||
436 | 437 | destroySelectedShip(); |
437 | 438 | ENG_SceneManager sceneManager = ENG_RenderRoot.getRenderRoot().getSceneManager("Main"); |
438 | 439 | selectionShip = sceneManager.createItem("SelectionShip", ENG_Utility.getUniqueId(), |
439 | - /*FilenameUtils.getBaseName(shipData.filename)*/shipData.filename, ""); | |
440 | + /*FilenameUtils.getBaseName(shipData.filename)*/shipData.filename, "", ENG_Workflows.MetallicWorkflow); | |
440 | 441 | // ENG_Entity entity = sceneManager.createEntity("SelectionShip", FilenameUtils.getBaseName(shipData.filename), ""); |
441 | 442 | // selectionShip.setDatablockName("Rocks"); |
442 | 443 | // selectionShip.setVisibilityFlag( 0x000000001 ); |
@@ -782,7 +782,8 @@ | ||
782 | 782 | // int nextId = weaponProperties.getNextId(); |
783 | 783 | String name = shipEntityProperties.getName() + "_" + headwayent.blackholedarksun.entitydata.WeaponData.WeaponType.getWeapon(weaponData.weaponType) + nextId; |
784 | 784 | // System.out.println("creating projectile: " + name); |
785 | - ENG_Item item = sceneManager.createItem(EntityProperties.generateUniqueName(name, gameEntityId), ENG_Utility.getUniqueId(), meshName, ""); | |
785 | + ENG_Item item = sceneManager.createItem(EntityProperties.generateUniqueName(name, gameEntityId), ENG_Utility.getUniqueId(), | |
786 | + meshName, "", ENG_Workflows.MetallicWorkflow); | |
786 | 787 | // ENG_Entity entity = sceneManager.createEntity(EntityProperties.generateUniqueName(name, gameEntityId), gameEntityId, meshName, ENTITY_GROUP_NAME); |
787 | 788 | |
788 | 789 |
@@ -1922,6 +1922,14 @@ | ||
1922 | 1922 | this.cameraNode = null; |
1923 | 1923 | } |
1924 | 1924 | |
1925 | + public ENG_Workflows getWorkflow(LevelObject obj) { | |
1926 | + if (obj.type == LevelObject.LevelObjectType.FLAG_BLUE || obj.type == LevelObject.LevelObjectType.FLAG_RED || | |
1927 | + obj.type == LevelObject.LevelObjectType.ASTEROID) { | |
1928 | + return ENG_Workflows.SpecularWorkflow; | |
1929 | + } | |
1930 | + return ENG_Workflows.MetallicWorkflow; | |
1931 | + } | |
1932 | + | |
1925 | 1933 | public static void incrementGameEntityId() { |
1926 | 1934 | ++gameEntityId; |
1927 | 1935 | } |
@@ -37,6 +37,7 @@ | ||
37 | 37 | import headwayent.hotshotengine.renderer.ENG_CameraNative; |
38 | 38 | import headwayent.hotshotengine.renderer.ENG_Item; |
39 | 39 | import headwayent.hotshotengine.renderer.ENG_SceneNode; |
40 | +import headwayent.hotshotengine.renderer.ENG_Workflows; | |
40 | 41 | import headwayent.hotshotengine.resource.ENG_ModelResource; |
41 | 42 | |
42 | 43 | import java.util.ArrayList; |
@@ -237,7 +238,8 @@ | ||
237 | 238 | String name = projectileLauncherEntityProperties.getName() + "_" + WeaponData.WeaponType.getWeapon(weaponData.weaponType) + |
238 | 239 | serverEntityProperties.getEntityId(); |
239 | 240 | |
240 | - ENG_Item item = sceneManager.createItem(EntityProperties.generateUniqueName(name, serverEntityProperties.getEntityId()), serverEntityProperties.getEntityId(), weaponData.filename, ""); | |
241 | + ENG_Item item = sceneManager.createItem(EntityProperties.generateUniqueName(name, serverEntityProperties.getEntityId()), | |
242 | + serverEntityProperties.getEntityId(), weaponData.filename, "", ENG_Workflows.MetallicWorkflow); | |
241 | 243 | // ENG_Entity entity = sceneManager.createEntity(EntityProperties.generateUniqueName(name, serverEntityProperties.getEntityId()), |
242 | 244 | // serverEntityProperties.getEntityId(), weaponData.filename, ENTITY_GROUP_NAME); |
243 | 245 | // This is a blocking call!!! |
@@ -755,7 +757,8 @@ | ||
755 | 757 | |
756 | 758 | EntityProperties serverEntityProperties = currentlyAddedEntity.getEntityProperties(); |
757 | 759 | |
758 | - ENG_Item item = sceneManager.createItem(EntityProperties.generateUniqueName(obj.name, serverEntityProperties.getEntityId()), ENG_Utility.getUniqueId()/*serverEntityProperties.getEntityId()*/, obj.meshName, ""); | |
760 | + ENG_Item item = sceneManager.createItem(EntityProperties.generateUniqueName(obj.name, serverEntityProperties.getEntityId()), | |
761 | + ENG_Utility.getUniqueId()/*serverEntityProperties.getEntityId()*/, obj.meshName, "", getWorkflow(obj)); | |
759 | 762 | |
760 | 763 | // This is a blocking call!!! |
761 | 764 | EntityAabb entityAabb = getEntityAabb(obj.meshName); |
@@ -490,7 +490,8 @@ | ||
490 | 490 | // Change this to EntityData. That contains the needed filename. |
491 | 491 | ShipData entityData = MainApp.getGame().getNameToShipMap("reloader"); |
492 | 492 | |
493 | - ENG_Item item = sceneManager.createItem(EntityProperties.generateUniqueName(entityData.name, gameEntityId), ENG_Utility.getUniqueId(), entityData.filename, ""); | |
493 | + ENG_Item item = sceneManager.createItem(EntityProperties.generateUniqueName(entityData.name, gameEntityId), | |
494 | + ENG_Utility.getUniqueId(), entityData.filename, "", ENG_Workflows.MetallicWorkflow); | |
494 | 495 | currentReloaderShipId = gameEntityId; |
495 | 496 | |
496 | 497 | // This is a blocking call!!! |
@@ -588,7 +589,8 @@ | ||
588 | 589 | long beginTime = currentTimeMillis(); |
589 | 590 | availableNameList.add(obj.name); |
590 | 591 | |
591 | - ENG_Item item = sceneManager.createItem(EntityProperties.generateUniqueName(obj.name, gameEntityId), ENG_Utility.getUniqueId(), obj.meshName, ""); | |
592 | + ENG_Item item = sceneManager.createItem(EntityProperties.generateUniqueName(obj.name, gameEntityId), | |
593 | + ENG_Utility.getUniqueId(), obj.meshName, "", getWorkflow(obj)); | |
592 | 594 | |
593 | 595 | // This is a blocking call!!! |
594 | 596 | EntityAabb entityAabb = getEntityAabb(obj.meshName); |
@@ -35,6 +35,7 @@ | ||
35 | 35 | import headwayent.hotshotengine.*; |
36 | 36 | import headwayent.hotshotengine.renderer.ENG_Item; |
37 | 37 | import headwayent.hotshotengine.renderer.ENG_SceneNode; |
38 | +import headwayent.hotshotengine.renderer.ENG_Workflows; | |
38 | 39 | |
39 | 40 | import java.util.*; |
40 | 41 | import java.util.concurrent.locks.ReentrantLock; |
@@ -531,7 +532,8 @@ | ||
531 | 532 | obj.meshName = obj.meshName + ".mesh"; |
532 | 533 | } |
533 | 534 | |
534 | - ENG_Item item = sceneManager.createItem(EntityProperties.generateUniqueName(obj.name, gameEntityId), ENG_Utility.getUniqueId(), obj.meshName, ""); | |
535 | + ENG_Item item = sceneManager.createItem(EntityProperties.generateUniqueName(obj.name, gameEntityId), | |
536 | + ENG_Utility.getUniqueId(), obj.meshName, "", getWorkflow(obj)); | |
535 | 537 | |
536 | 538 | EntityAabb entityAabb = getEntityAabb(obj.meshName); |
537 | 539 | System.out.println("centre: " + entityAabb.centre.toString() + " halfSize: " + entityAabb.halfSize.toString()); |
@@ -894,7 +896,8 @@ | ||
894 | 896 | // int nextId = weaponProperties.getNextId(); |
895 | 897 | String name = entityProperties.getName() + "_" + headwayent.blackholedarksun.entitydata.WeaponData.WeaponType.getWeapon(weaponData.weaponType) + nextId; |
896 | 898 | System.out.println("creating projectile: " + name); |
897 | - ENG_Item item = sceneManager.createItem(EntityProperties.generateUniqueName(name, gameEntityId), ENG_Utility.getUniqueId(), weaponData.filename, ""); | |
899 | + ENG_Item item = sceneManager.createItem(EntityProperties.generateUniqueName(name, gameEntityId), | |
900 | + ENG_Utility.getUniqueId(), weaponData.filename, "", ENG_Workflows.MetallicWorkflow); | |
898 | 901 | // ENG_Entity entity = sceneManager.createEntity(EntityProperties.generateUniqueName(name, gameEntityId), gameEntityId, meshName, ENTITY_GROUP_NAME); |
899 | 902 | EntityAabb entityAabb = getEntityAabb(weaponData.filename); |
900 | 903 | ENG_SceneNode node = sceneManager.getRootSceneNode().createChildSceneNode(item.getName()); |
@@ -1014,7 +1017,8 @@ | ||
1014 | 1017 | long nextId = serverWeaponProperties.getNextId();//clientProjectileProperties.getId(); |
1015 | 1018 | String name = entityProperties.getName() + "_" + headwayent.blackholedarksun.entitydata.WeaponData.WeaponType.getWeapon(clientProjectileProperties.getType()) + "_" + nextId; |
1016 | 1019 | System.out.println("creating projectile: " + name); |
1017 | - ENG_Item item = sceneManager.createItem(EntityProperties.generateUniqueName(name, gameEntityId), ENG_Utility.getUniqueId(), weaponData.filename, ""); | |
1020 | + ENG_Item item = sceneManager.createItem(EntityProperties.generateUniqueName(name, gameEntityId), | |
1021 | + ENG_Utility.getUniqueId(), weaponData.filename, "", ENG_Workflows.MetallicWorkflow); | |
1018 | 1022 | // ENG_Entity entity = sceneManager.createEntity(EntityProperties.generateUniqueName(name, gameEntityId), gameEntityId, weaponData.filename, ENTITY_GROUP_NAME); |
1019 | 1023 | EntityAabb entityAabb = getEntityAabb(weaponData.filename); |
1020 | 1024 | ENG_SceneNode node = sceneManager.getRootSceneNode().createChildSceneNode(item.getName()); |