Beispiel #1
0
    public void DoAnimation(
        Character _CharRef,
        string _ChunkNode,
        int _ChunkIndex,
        AnimationState _NextState,
        float _DelayTime = 0.0f)
    {
        RootRef = _CharRef.gameObject;
        ChunkRef[_ChunkIndex] = GlobalSingleton.Find(_ChunkNode, true);
        Mesh_VoxelChunk Mesh      = _CharRef.mesh as Mesh_VoxelChunk;
        string          BoneIndex = "bone" + _ChunkIndex;

        // ChunkRef
        if (null != ChunkRef &&
            null != RootRef &&
            Mesh.Chunks.ContainsKey(BoneIndex))
        {
            ChunkMapRef[_ChunkIndex] = Mesh.Chunks[BoneIndex];
            // GlobalSingleton.DEBUG("Ready to change parent:"+ ChunkMapRef[_ChunkIndex].Count);

            foreach (GameObject go in ChunkMapRef[_ChunkIndex])
            {
                go.transform.SetParent(ChunkRef[_ChunkIndex].transform);
            }
        }

        ChangeAnimationState(_ChunkIndex, _NextState, _DelayTime, true);
    }
Beispiel #2
0
    public void DoChangeModel(int _ChunkIndex, MODELTYPE _ModelType)
    {
        string model = GenerateModelStringFromTemplateSetting(_ChunkIndex, _ModelType);

        Mesh_VoxelChunk Mesh = m_ShareMeshData as Mesh_VoxelChunk;

        if (null != Mesh)
        {
            // GlobalSingleton.DEBUG("ChangeModel : " + _ChunkIndex + "," + model);
            string chunkKey = GenerateChunkKeyFromIndex(_ChunkIndex);
            Mesh.ChangeModel(chunkKey, model);
        }
    }
Beispiel #3
0
    // copy
    public Mesh_VoxelChunk(IMesh _CopyMesh) : base(_CopyMesh)
    {
        Mesh_VoxelChunk _copyVoxelChunk = _CopyMesh as Mesh_VoxelChunk;

        if (_copyVoxelChunk.HasChunk)
        {
            m_ChunkMap = new Dictionary <string, Chunk>(_copyVoxelChunk.ChunkMap);
        }
        if (_copyVoxelChunk.HasModel)
        {
            m_ModelMap = new Dictionary <string, Chunk>(_copyVoxelChunk.ModelMap);
        }
    }
Beispiel #4
0
    public IMesh CreateMesh(string meshname)
    {
        if (!m_MeshTemplateContainer.ContainsKey(meshname))
        {
            IMesh mesh = Load(meshname);
            if (mesh != null && mesh.DoParse()) {
                m_MeshTemplateContainer.Add(meshname, mesh);
            }
        }

        Mesh_VoxelChunk meshInstance = new Mesh_VoxelChunk(m_MeshTemplateContainer[meshname]);
        meshInstance.m_InstanceID = s_UniqueInstanceID++;
        m_MeshInstanceContainer.Add(meshInstance.m_InstanceID, meshInstance);
        return meshInstance;
    }
Beispiel #5
0
    public IMesh CreateMesh(string meshname)
    {
        if (!m_MeshTemplateContainer.ContainsKey(meshname))
        {
            IMesh mesh = Load(meshname);
            if (mesh != null && mesh.DoParse())
            {
                m_MeshTemplateContainer.Add(meshname, mesh);
            }
        }

        Mesh_VoxelChunk meshInstance = new Mesh_VoxelChunk(m_MeshTemplateContainer[meshname]);

        meshInstance.m_InstanceID = s_UniqueInstanceID++;
        m_MeshInstanceContainer.Add(meshInstance.m_InstanceID, meshInstance);
        return(meshInstance);
    }
Beispiel #6
0
    public void StartMorphingModel(int _ChunkIndex, MODELTYPE _ModelType)
    {
        if (false == m_MorphingData.ContainsKey(_ChunkIndex))
        {
            m_MorphingData.Add(_ChunkIndex, new MorphingStruct());
        }

        MorphingStruct morphData = null;

        morphData = m_MorphingData[_ChunkIndex];
        morphData.isInMorphing = true;


        string modelstr = GenerateModelStringFromTemplateSetting(_ChunkIndex, _ModelType);

        Mesh_VoxelChunk Mesh = m_ShareMeshData as Mesh_VoxelChunk;

        if (null != Mesh)
        {
            string chunkKey = GenerateChunkKeyFromIndex(_ChunkIndex);
            Mesh.StartMorphingModel(chunkKey, modelstr, morphData);
        }
    }