SceneにてEntityをHashMapで持つように変更。また、コンポーネントの追加処理等はGameObjectに対してのみ行えるように変更
1 parent 1d0b0aa commit 41b52a1bd141a0255d83fea5c9bcb32e59d07442
NoranekoFelician authored on 7 Oct
Showing 7 changed files
View
66
GameEngine/src/main/java/gameEngine/GameEditor.java
package gameEngine;
 
import gameEngine.entites.Entity;
import gameEngine.entites.GameObject;
import gameEngine.entites.gameComponents.ColorController;
import gameEngine.entites.gameComponents.Mesh;
import gameEngine.scenes.*;
 
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Map;
 
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;
 
public class GameEditor extends JFrame {
 
private JList<String> objectList;
@Override
public Component getListCellRendererComponent(JList<? extends String> list, String value, int index, boolean isSelected, boolean cellHasFocus) {
JLabel label = new JLabel();
int id = Integer.parseInt(value); // 内部でIDを使用
GameObject gameObject = gameScene.gameObjects.get(id);
label.setText(gameObject.name); // リストには名前を表示する
Entity entity = gameScene.entities.get(id);
label.setText(entity.name); // リストには名前を表示する
if (isSelected) {
label.setBackground(list.getSelectionBackground());
label.setForeground(list.getSelectionForeground());
} else {
private void addComponentToGameObject() {
String selectedIdStr = objectList.getSelectedValue();
if (selectedIdStr != null) {
int selectedId = Integer.parseInt(selectedIdStr);
GameObject selectedObject = gameScene.gameObjects.get(selectedId);
if (selectedObject != null) {
// コンポーネントを追加 (例: Mesh など)
gameScene.addComponent(selectedObject);
JOptionPane.showMessageDialog(this, "Component Added to " + selectedObject.name);
Entity selectedEntity = gameScene.entities.get(selectedId);
if (selectedEntity instanceof GameObject) {
GameObject gameObject = (GameObject) selectedEntity;
gameScene.addComponent(gameObject);
JOptionPane.showMessageDialog(this, "Component Added to " + selectedEntity.name);
}
}
}
 
// GameObjectのリストを更新
public void updateGameObjectList(Scene gameScene) {
listModel.clear();
for (Map.Entry<Integer, GameObject> entry : gameScene.gameObjects.entrySet()) {
GameObject gameObject = entry.getValue();
listModel.addElement(String.valueOf(gameObject.getId())); // IDをリストに表示(内部)
}
for (Map.Entry<Integer, Entity> entry : gameScene.entities.entrySet()) {
Entity entity = entry.getValue();
listModel.addElement(String.valueOf(entity.getId())); // IDをリストに表示
}
}
 
// 選択されたGameObjectのプロパティをロードする
private void loadSelectedGameObject() {
String selectedIdStr = objectList.getSelectedValue();
if (selectedIdStr != null) {
int selectedId = Integer.parseInt(selectedIdStr); // IDとして扱う
GameObject selectedObject = gameScene.gameObjects.get(selectedId);
if (selectedObject != null) {
nameField.setText(selectedObject.name);
posXField.setText(String.valueOf(selectedObject.transform.position.x));
posYField.setText(String.valueOf(selectedObject.transform.position.y));
posZField.setText(String.valueOf(selectedObject.transform.position.z));
rotXField.setText(String.valueOf(selectedObject.transform.rotation.x));
rotYField.setText(String.valueOf(selectedObject.transform.rotation.y));
rotZField.setText(String.valueOf(selectedObject.transform.rotation.z));
scaleXField.setText(String.valueOf(selectedObject.transform.scale.x));
scaleYField.setText(String.valueOf(selectedObject.transform.scale.y));
scaleZField.setText(String.valueOf(selectedObject.transform.scale.z));
int selectedId = Integer.parseInt(selectedIdStr);
Entity selectedEntity = gameScene.entities.get(selectedId);
if (selectedEntity != null) {
nameField.setText(selectedEntity.name);
posXField.setText(String.valueOf(selectedEntity.transform.position.x));
posYField.setText(String.valueOf(selectedEntity.transform.position.y));
posZField.setText(String.valueOf(selectedEntity.transform.position.z));
rotXField.setText(String.valueOf(selectedEntity.transform.rotation.x));
rotYField.setText(String.valueOf(selectedEntity.transform.rotation.y));
rotZField.setText(String.valueOf(selectedEntity.transform.rotation.z));
scaleXField.setText(String.valueOf(selectedEntity.transform.scale.x));
scaleYField.setText(String.valueOf(selectedEntity.transform.scale.y));
scaleZField.setText(String.valueOf(selectedEntity.transform.scale.z));
}
}
}
 
private void applyGameObjectChanges() {
String selectedIdStr = objectList.getSelectedValue();
if (selectedIdStr != null) {
int selectedId = Integer.parseInt(selectedIdStr); // IDとして扱う
GameObject selectedObject = gameScene.gameObjects.get(selectedId);
if (selectedObject != null) {
selectedObject.name = nameField.getText();
selectedObject.transform.setPosition(
Entity selectedEntity = gameScene.entities.get(selectedId);
if (selectedEntity != null) {
selectedEntity.name = nameField.getText();
selectedEntity.transform.setPosition(
Float.parseFloat(posXField.getText()),
Float.parseFloat(posYField.getText()),
Float.parseFloat(posZField.getText())
);
selectedObject.transform.setRotation(
selectedEntity.transform.setRotation(
Float.parseFloat(rotXField.getText()),
Float.parseFloat(rotYField.getText()),
Float.parseFloat(rotZField.getText())
);
selectedObject.transform.setScale(
selectedEntity.transform.setScale(
Float.parseFloat(scaleXField.getText()),
Float.parseFloat(scaleYField.getText()),
Float.parseFloat(scaleZField.getText())
);
View
3
■■
GameEngine/src/main/java/gameEngine/entites/Entity.java
package gameEngine.entites;
 
import gameEngine.entites.gameComponents.GameComponent;
import gameEngine.entites.gameComponents.MoveImage;
import gameEngine.geometry.Transform;
 
public class Entity {
 
}
public int getId(){
return entityId;
}
 
}
View
GameEngine/src/main/java/gameEngine/entites/gameComponents/Mesh.java
View
GameEngine/src/main/java/gameEngine/entites/gameComponents/MoveImage.java
View
GameEngine/src/main/java/gameEngine/scenes/GameScene.java
View
GameEngine/src/main/java/gameEngine/scenes/Scene.java
View
GameEngine/src/main/java/gameEngine/views/Window.java