1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
|
#include "UnityPrefix.h"
#include "GOCreation.h"
#include "GameObjectUtility.h"
#include "Runtime/Filters/Renderer.h"
#include "Runtime/Dynamics/CapsuleCollider.h"
#include "Runtime/Dynamics/Collider.h"
#include "ResourceManager.h"
#include "Runtime/Filters/Mesh/LodMeshFilter.h"
#include "Runtime/Filters/Mesh/LodMesh.h"
#include "Runtime/Misc/BuildSettings.h"
#include "Runtime/Shaders/Material.h"
#include "Runtime/Interfaces/IPhysics.h"
GameObject* CreatePrimitive (int type)
{
GameObject* go = NULL;
if (type == kPrimitiveSphere)
{
go = &CreateGameObject ("Sphere", "MeshFilter", "SphereCollider", "MeshRenderer", NULL);
go->GetComponent (MeshFilter).SetSharedMesh (GetBuiltinResource<Mesh> ("New-Sphere.fbx"));
Collider* collider = go->QueryComponent (Collider);
if (collider)
{
if (!IS_CONTENT_NEWER_OR_SAME(kUnityVersion4_0_a1))
SmartResetObject(*collider);
}
go->GetComponent (Renderer).SetMaterial (Material::GetDefaultDiffuseMaterial(), 0);
}
else if (type == kPrimitiveCapsule)
{
go = &CreateGameObject ("Capsule", "MeshFilter", "CapsuleCollider", "MeshRenderer", NULL);
go->GetComponent (MeshFilter).SetSharedMesh (GetBuiltinResource<Mesh> ("New-Capsule.fbx"));
CapsuleCollider* collider = go->QueryComponent (CapsuleCollider);
if (collider != NULL)
{
if (!IS_CONTENT_NEWER_OR_SAME(kUnityVersion4_0_a1))
SmartResetObject(*collider);
else
GetIPhysics()->CapsuleColliderSetHeight(*collider, 2.0f);
}
go->GetComponent (Renderer).SetMaterial (Material::GetDefaultDiffuseMaterial(), 0);
}
else if (type == kPrimitiveCylinder)
{
go = &CreateGameObject ("Cylinder", "MeshFilter", "CapsuleCollider", "MeshRenderer", NULL);
go->GetComponent (MeshFilter).SetSharedMesh (GetBuiltinResource<Mesh> ("New-Cylinder.fbx"));
CapsuleCollider* collider = go->QueryComponent (CapsuleCollider);
if (collider != NULL)
{
if (!IS_CONTENT_NEWER_OR_SAME(kUnityVersion4_0_a1))
SmartResetObject(*collider);
else
GetIPhysics()->CapsuleColliderSetHeight(*collider, 2.0f);
}
go->GetComponent (Renderer).SetMaterial (Material::GetDefaultDiffuseMaterial(), 0);
}
else if (type == kPrimitiveCube)
{
go = &CreateGameObject ("Cube",
"MeshFilter",
#if ENABLE_PHYSICS
"BoxCollider",
#endif
"MeshRenderer",
NULL);
go->GetComponent (MeshFilter).SetSharedMesh (GetBuiltinResource<Mesh> ("Cube.fbx"));
#if ENABLE_PHYSICS
SmartResetObject(go->GetComponent (Collider));
#endif
go->GetComponent (Renderer).SetMaterial (Material::GetDefaultDiffuseMaterial(), 0);
}
else if (type == kPrimitivePlane)
{
go = &CreateGameObject ("Plane", "MeshFilter", "MeshCollider", "MeshRenderer", NULL);
go->GetComponent (MeshFilter).SetSharedMesh (GetBuiltinResource<Mesh> ("New-Plane.fbx"));
SmartResetObject(go->GetComponent (Collider));
go->GetComponent (Renderer).SetMaterial (Material::GetDefaultDiffuseMaterial(), 0);
}
else if (type == kPrimitiveQuad)
{
go = &CreateGameObject ("Quad", "MeshFilter", "MeshCollider", "MeshRenderer", NULL);
go->GetComponent (MeshFilter).SetSharedMesh (GetBuiltinResource<Mesh> ("Quad.fbx"));
SmartResetObject(go->GetComponent (Collider));
go->GetComponent (Renderer).SetMaterial (Material::GetDefaultDiffuseMaterial(), 0);
}
return go;
}
|